<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /* 
      从一个数组中找出对应的元素，然后进行插入。
      其实就是以下几种情况。
      ①最左边
      ②找到目标元素的下标，然后插入
      ③找不到目标元素，找到最近的两个元素，在其中插入
      ④插入最后方
      二分有个细节在于，如果目标没找到，
      那么left<=right  比如 1 3 4 5  找2，那么left=1 right==0
          left<right   比如 1 3 4 5  找2，那么left==1 right==1 (最后跳出循环的条件就是left!=right)

      */
      var searchInsert = function (nums, target) {
        let left = 0
        let right = nums.length
        while (left < right) {
          let middle = parseInt((left + right) / 2)
          if (nums[middle] == target) {
            return middle
          } else if (nums[middle] < target) {
            left = middle + 1
          } else {
            right = middle
          }
        }
        return right
      }
      console.log(searchInsert([1, 3, 4, 5], 10))
    </script>
  </body>
</html>
